package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 1. 插入微博
     */
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /**
     * 2. 删除指定微博
     */
    //@Delete("DELETE FROM weibo WHERE id = #{weiboId}")
    int deleteWeibo(Long weiboId);

    /**
     * 3. 修改指定微博信息
     * UPDATE weibo SET content=#{},created=#{}.... WHERE id=#{xx}
     */
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeibo(Weibo weibo);

    /**
     * 4.查询:单条数据全字段查询[根据ID查询某条微博的所有信息]
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{weiboId}")
    Weibo selectWeiboById(Long weiboId);

        /**
         * 5.查询: 多条数据全字段查询[查询所有的微博信息]
         */
        //@Select("SELECT id,content,created,user_id userId FROM weibo")
        List<Weibo> selectWeibo();

    /**
     * 6.单条数据部分字段查询：查询指定微博的内容和发布时间
     *   SELECT content,created FROM weibo WHERE id=200
     */
    //@Select("SELECT content,created FROM weibo WHERE id=#{weiboId}")
    SelectWeiboVO1 selectWeiboVO1(Long weiboId);

    /**
     * 7.多条数据部分字段查询: 查询指定用户发的所有微博的id和内容content
     *   比如: 查询id是100的用户发的微博的id和内容content,参数为用户id[userId]
     */
    //@Select("SELECT id, content FROM weibo WHERE user_id = #{userId}")
    List<SelectWeiboVO2> selectWeiboVO2(Long userId);

    /**
     * 8.动态修改微博信息
     */
    int dynamicUpdateWeibo(Weibo weibo);

    /**
     * 9.数组方式array动态删除微博信息: 根据微博id删除微博
     *   DELETE FROM weibo WHERE id IN (3,5,8)
     */
    int dynamicDeleteWeibo1(Long[] ids);

    /**
     * 10.集合方式list动态删除微博信息: 根据微博id删除微博
     *   DELETE FROM weibo WHERE id IN (3,5,8)
     */
    int dynamicDeleteWeibo2(List<Long> ids);

    /**
     * 11.统计数量:统计微博表中共有多少条数据;
     *    SELECT COUNT(*) FROM weibo
     */
    int selectCount();

    /**
     * 12.ResultMap单表：根据微博ID查询该条微博的ID、内容、用户ID
     *    SELECT id,content,user_id FROM weibo WHERE id=?
     */
    ResultMapVO1 selectResultMapVO1(Long weiboId);

    /**
     * 13.ResultMap多表：
     *    查询指定用户发布的微博信息，显示：用户id，用户昵称，微博集合List<Weibo>
     */
    ResultMapVO2 selectResultMapVO2(Long userId);

    /**
     * 14.ResultMap多表练习：指定微博的所有评论信息
     */
    ResultMapVO3 selectResultMapVO3(Long weiboId);

    /**
     * 15.ResultMap + VO类练习：查询指定微博的所有评论信息,微博ID、微博内容、该条微博所有评论的id、评论内容和时间
     */
    ResultMapVO4 selectResultMapVO4(Long weiboId);
}










